package com.avo.ramcache.config;

import java.io.Serializable;

public interface IEntity<PK extends Serializable & Comparable<PK>> {

    /**
     * 获取实体标识
     */
    PK getId();

    /**
     * 序列化
     */
    default boolean serialize() {
        try {
            return doSerialize();
        } catch (Exception e) {
            throw new RuntimeException("序列化错误，即将入库失败");
        }
    }

    boolean doSerialize();

    /**
     * 反序列化
     */
    void deserialize();

    int getServer();

    /**
     * 数据是否过期
     *
     * @return 1-过期
     */
    int getExpire();

    /**
     * 执行数据过期
     */
    void expire();

}
